#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int p[N];

struct Edg{
	int a,b,w;
}edg[N*2];

bool cmp(Edg a,Edg b){
	return a.w<b.w;
}

int find(int x){
	if(p[x]!=x)p[x]=find(p[x]);
	return p[x];
}

int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		p[i]=i;
	}
	for(int i=0;i<m;i++){
		cin>>edg[i].a>>edg[i].b>>edg[i].w;
	}
	sort(edg,edg+m,cmp);
	int ans=0,cnt=0;
	for(int i=0;i<m;i++){
		int a=edg[i].a,b=edg[i].b,w=edg[i].w;
		a=find(a),b=find(b);
		if(a!=b){
			ans+=w;
			cnt++;
			p[b]=p[a];
		}
	}
	if(cnt==n-1)cout<<ans;
	else cout<<"impossible";
	return 0;
} 
